﻿namespace DirectoryInfoTest
{
    class Program
    {

        static void Main(string[] args)
        {
            Test.Do();

        }


    }
    // DirectoryInfo // 目录信息

    class Test
    {
        public static void Do()
        {
            // 任何东西都有生命周期
            //  增删改查 ：new 、 delete 、change  、 find

            // 1.实例化文件夹操作对象
            string path = "D:/Study/";
            DirectoryInfo info = new DirectoryInfo(path);

            // 2. 查询：是否存在这个目录
            Console.WriteLine($"{path} - {(info.Exists ? "" : "不")} 存在");

            // 3. 文件夹的新增
            // 在创建文件夹时，如果已经存在则不处理
            path = "D:/Study/ABC";
            info = new DirectoryInfo(path);
            info.Create();

            //4. 删除文件夹
            Console.WriteLine($"Before {path} - {(info.Exists ? "" : "不")} 存在");
            info.Delete();
            Console.WriteLine($"After {path} - {(info.Exists ? "" : "不")} 存在");


            //5. 查： 获取目录下的文件，不包含文件夹
            // 复数 ：重复计算
            // fullname :完整名称，指代 路径 
            // 路径不存在则报错，需要 try 或者用 if exist 拦截.
            path = "D:/study";
            info = new DirectoryInfo(path);
            var arr = info.GetFiles();
            Console.WriteLine($"路径 {info.FullName} 下的文件有：");
            foreach (var item in arr)
            {
                Console.WriteLine($"文件为：{item.Name}");
            }
            Console.WriteLine($"路径 {info.FullName} 下的文件列举完毕!");

            //6. 改：移动文件夹
            // 如果文件夹的父节点没有变，就相当于是 对文件夹重命名
            path = "D:/Study/Folder1";
            var moveto = "D:/Study/Folder2/FFFolder";
            info = new DirectoryInfo(path);
            info.MoveTo(moveto);
            info.MoveTo(path);  // 为了避免下次测试 文件夹找不见，所以又移动回来

            // 7.  查： 获取父节点路径
            // parent :父母，指代父节点
            Console.WriteLine($"目录 {info.Name} 的父节点是 {info.Parent}");

            //8. 查询： 文件夹名称
            Console.WriteLine($"文件夹的名称：{info.Name} ");
        }
    }
}